package collections;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;

/*
集合整理:
{1.集合元素可以重复:{ArrayList
                  删除多,查找少:LinkedList
                  }
 2.集合元素不重复:{ HashSet
                  存储有顺序:LinkeHashSet
                  排序:TreeSet
 }}

可变参数: 在形参中,可以接受多个数据,本质上是一个数组
        数据类型...变量名
        注 :1.一个方法的形参中只允许有一个可变参数
            2.可变参数必须放在其他参数后面
Collections:并不属于集合,只是一个工具类,类似Arrays类
        静态方法:addAll(单列集合,可变参数):给定集合,进行批量添加
                max/min(单列集合):找最大/小值
                shuffle(List):打乱元素顺序
                binarSearch(List,查找的元素):二分查找
                swap(List,元素1,元素2):交换集合元素
                sort(List):必须实现comparable接口,排序
 */
public class CollectionsDemo {
    public static void main(String[] args) {
        HashSet<String> strings=new HashSet<>();
        //批量添加
        Collections.addAll(strings,"21","树","sad","sad");
        System.out.println(strings);

        ArrayList<Integer>arr=new ArrayList<>();
        Collections.addAll(arr,4,6,2,1,3);
        //最大最小值
        System.out.println(Collections.max(arr));
        System.out.println(Collections.min(arr));

        //打乱list集合元素
        Collections.shuffle(arr);
        System.out.println(arr);

        //二分查找,排序
        Collections.sort(arr);
        int binarySearch = Collections.binarySearch(arr, 3);
        System.out.println(arr);
        System.out.println(binarySearch);

        //交换顺序
        Collections.swap(arr,0,2);
        System.out.println(arr);

        //匿名内部类,比较器排序
        Collections.sort(arr, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2-o1;
            }
        });
        System.out.println(arr);

    }
}
